Micron Document
`:top
`!Data-driven testing`! (DDT), also known as `!table-driven testing`! or `!parameterized testing`!, is a `F33f`_`[software testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_testing]`_`f technique that uses a table of `F33f`_`[data`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data]`_`f that directs test execution by encoding input, expected output and test-environment settings.`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f]`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f] One advantage of DDT over other testing techniques is relative ease to cover an additional `F33f`_`[test case`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Test_case]`_`f for the `F33f`_`[system under test`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=System_under_test]`_`f by adding a line to a table instead of having to modify test `F33f`_`[source code`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Source_code]`_`f.

Often, a table provides a complete set of stimulus input and expected outputs in each row of the table. Stimulus input values typically cover values that correspond to boundary or partition input spaces.

DDT involves a `F33f`_`[framework`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_framework]`_`f that executes tests based on input data. The framework is a `F33f`_`[re-usable`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_reuse]`_`f test asset that can reduce maintenance of a test `F33f`_`[codebase`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Codebase]`_`f. DDT allows for anything that has a potential to change to be segregated from the framework; stored in an external asset. The framework might manage storage of tables and test results in a `F33f`_`[database`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Database]`_`f such as `F33f`_`[data pool`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data_pool]`_`f, `F33f`_`[DAO`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Data_access_object]`_`f and `F33f`_`[ADO`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ActiveX_Data_Objects]`_`f. An advanced framework might harvest data from a running system using a purpose-built tool (sniffer). The DDT framework can playback harvested data for `F33f`_`[regression testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Regression_testing]`_`f.

Automated test suites contain user interactions through the system's GUI, for repeatable testing. Each test begins with a copy of the "before" image reference database. The "user interactions" are replayed through the "new" GUI version and result in the "post test" database. The `*reference`* "post test" database is compared to the "post test" database, using a tool.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f] Differences reveal probable regression. Navigation the `F33f`_`[System Under Test`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=System_Under_Test]`_`f user interface, reading data sources, and logging test findings may be coded in the table.

`F33f`_`[Keyword-driven testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Keyword-driven_testing]`_`f is similar except that the logic for the test case itself is encoded as data values in the form of a set of "action words", and not embedded or "hard-coded" in the test script. The script is simply a "driver" (or delivery mechanism) for the data that is held in the data source.

>>Contents

• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f

-─

>>See also

• `F33f`_`[Control table`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Control_table]`_`f – Data table used to control program flow
• `F33f`_`[Keyword-driven testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Keyword-driven_testing]`_`f – Software testing methodology
• `F33f`_`[Test automation framework`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Test_automation_framework]`_`f – Use of purpose-built software to control test executionPages displaying short descriptions of redirect targets
• `F33f`_`[Test-driven development`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Test-driven_development]`_`f – Method of writing code
• `F33f`_`[Modularity-driven testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Modularity-driven_testing]`_`f
• `F33f`_`[Model-based testing`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Model-based_testing]`_`f

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f "golang/go TableDrivenTests". `*GitHub`*.
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f "JUnit 5 User Guide". `*junit.org`*.
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f "Home". `*diffkit.org`*.

• Carl Nagle: `*Test Automation Frameworks`*[1], Software Automation Framework Support on SourceForge [2], Data-driven testing approach [3]

`c`F0af`_`[↑ Back to top`#top]`_`f`a